/**
 * 基础点坐标类型
 */
export type Point = {
    x: number;
    y: number;
};

/**
 * 线的类型定义
 */
export type Line = {
    start: Point;
    end: Point;
    color?: string;
    width?: number;
};

/**
 * 碰撞体类型定义
 */
export interface Collision {
    l1: number;  // 长度
    l2: number;  // 宽度
}

/**
 * 车辆(块)的类型定义
 */
export type BlockType = 'car' | 'flatcar' | 'pedestrian' | 'bicycle';

/**
 * 车辆(块)的源数据定义
 */
export interface BlockSource {
    img: CanvasImageSource;
    modelUrl?: string;
}

/**
 * 块(车辆)的完整定义
 */
export interface Block {
    id: string;
    name: string;
    type: BlockType;
    x: number;     // X坐标
    y: number;     // Y坐标
    heading: number; // 朝向角度
    color: string;  // 颜色
    collision: Collision; // 碰撞体信息
    source: BlockSource; // 资源信息
    speed?: number; // 速度
    acceleration?: number; // 加速度
}

/**
 * 工具类型定义
 */
export interface Tool {
    key: string;
    name: string;
    icon: string;
    description: string;
}

/**
 * 场景信息类型
 */
export interface Scene {
    id: string;
    name: string;
    description: string;
    blocks: Block[];
    createdAt: Date;
    updatedAt: Date;
}

/**
 * 画布引擎配置
 */
export interface CanvasConfig {
    containerId: string;
    initialScale: number;
    backgroundColor: string;
    gridLevels: number[];
    targetGridPixelSize: number;
}
